package team.nine.kuaichezuche.service;

import team.nine.kuaichezuche.model.VehicleInstance;

import java.util.List;

/**
 * 车辆实例服务接口，定义车辆实例相关的业务方法
 */
public interface VehicleInstanceService {

    /**
     * 创建车辆实例
     * @param vehicleInstance 车辆实例对象
     * @return 创建成功的车辆实例对象
     */
    VehicleInstance createVehicleInstance(VehicleInstance vehicleInstance);

    /**
     * 根据ID获取车辆实例
     * @param id 车辆实例ID
     * @return 车辆实例对象，如果不存在则返回null
     */
    VehicleInstance getVehicleInstanceById(Integer id);

    /**
     * 根据车牌号获取车辆实例
     * @param licensePlate 车牌号
     * @return 车辆实例对象，如果不存在则返回null
     */
    VehicleInstance getVehicleInstanceByLicensePlate(String licensePlate);

    /**
     * 根据车主ID获取车辆实例列表
     * @param ownerId 车主ID
     * @return 符合条件的车辆实例列表
     */
    List<VehicleInstance> getVehicleInstancesByOwnerId(Long ownerId);

    /**
     * 根据车辆状态获取车辆实例列表
     * @param status 车辆状态
     * @return 符合条件的车辆实例列表
     */
    List<VehicleInstance> getVehicleInstancesByStatus(Byte status);

    /**
     * 更新车辆实例
     * @param vehicleInstance 包含更新信息的车辆实例对象
     * @return 更新后的车辆实例对象
     */
    VehicleInstance updateVehicleInstance(VehicleInstance vehicleInstance);

    /**
     * 删除车辆实例
     * @param id 车辆实例ID
     */
    void deleteVehicleInstance(Integer id);

    /**
     * 根据车辆信息ID获取车辆实例列表
     * @param vehicleInfoId 车辆信息ID
     * @return 符合条件的车辆实例列表
     */
    List<VehicleInstance> getVehicleInstancesByVehicleInfoId(Integer vehicleInfoId);

    /**
     * 获取所有车辆实例列表（分页）
     * @param page 页码
     * @param pageSize 每页数量
     * @return 车辆实例列表
     */
    List<VehicleInstance> getVehicleInstanceList(Integer page, Integer pageSize);

    /**
     * 获取车辆实例总数
     * @return 车辆实例总数
     */
    int getVehicleInstanceCount();
}